SpringBoot整合分页插件PageHelper

您所在的位置:网站首页 java pagehelper 原理 SpringBoot整合分页插件PageHelper

SpringBoot整合分页插件PageHelper

2023-03-31 01:34| 来源: 网络整理| 查看: 265

在springboot中使用PageHelper插件有两种较为相似的方式,接下来我就将这两种方式进行总结。官方使用说明

方式一:使用原生的PageHelper

1.在pom.xml中引入依赖

com.github.pagehelper pagehelper 4.1.3

2.在项目里面添加配置

@Configuration public class MybatisConfig { @Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties p = new Properties(); p.setProperty("dialect", "Mysql"); p.setProperty("offsetAsPageNum", "true"); p.setProperty("rowBoundsWithCount", "true"); pageHelper.setProperties(p); return pageHelper; } }

方式二:使用PageHelper的starter

1.在pom.xml中引入依赖

com.github.pagehelper pagehelper-spring-boot-starter 1.2.10

2.在application.properties或者application.yml格式配置pagehelper的属性

application.properties #pagehelper分页插件配置 pagehelper.helper-dialect=mysql pagehelper.reasonable=true pagehelper.support-methods-arguments=true pagehelper.params=count=countSql application.yml pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true

最后使用:

直接在controller层分页方法中使用

public PageInfo getPageById(@RequestParam("sectionId") String sectionId, @RequestParam("pageNum" Integer pageNum,@RequestParam("pageSize" Integer pageSize)) { PageInfo info= PageHelper.orderBy(xxx ASC/DESC).startPage(pageNum, pageSize).doSelectPage(() -> { this.xxxService.getPagedBySectionId(sectionId); }); return info; }

其他调用方式参考:

第一种、RowBounds方式的调用

List list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(0, 10));

第二种、Mapper接口方式的调用,推荐这种使用方式。

PageHelper.startPage(1, 10); List list = countryMapper.selectIf(1);

第三种、Mapper接口方式的调用,推荐这种使用方式。

PageHelper.offsetPage(1, 10); List list = countryMapper.selectIf(1);

第四种、参数方法调用 存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数

public interface CountryMapper { List selectByPageNumSize( @Param("user") User user, @Param("pageNum") int pageNum, @Param("pageSize") int pageSize); } //配置supportMethodsArguments=true //在代码中直接调用: List list = countryMapper.selectByPageNumSize(user, 1, 10);

//第五种、参数对象

//如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页 //有如下 User 对象 public class User { //其他fields //下面两个参数名和 params 配置的名字一致 private Integer pageNum; private Integer pageSize; }

//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数

public interface CountryMapper { List selectByPageNumSize(User user); }

//当 user 中的 pageNum!= null && pageSize!= null 时,会自动分页

List list = countryMapper.selectByPageNumSize(user);

//第六种、ISelect 接口方式

//jdk6,7用法,创建接口 Page page = PageHelper.startPage(1, 10).doSelectPage(new ISelect() { @Override public void doSelect() { countryMapper.selectGroupBy(); } });

jdk8 lambda用法

Page page = PageHelper.startPage(1, 10).doSelectPage(()-> countryMapper.selectGroupBy()); //也可以直接返回PageInfo,注意doSelectPageInfo方法和doSelectPage pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(new ISelect() { @Override public void doSelect() { countryMapper.selectGroupBy(); } });

对应的lambda用法

pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> countryMapper.selectGroupBy()); //count查询,返回一个查询语句的count数 long total = PageHelper.count(new ISelect() { @Override public void doSelect() { countryMapper.selectLike(country); } }); //lambda total = PageHelper.count(()->countryMapper.selectLike(country));

参考:https://blog.csdn.net/csdn_huzeliang/article/details/79350425



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3